package server.business.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import server.business.pojo.ReturnBloodStation;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @author Galaxy
 * @description 针对表【return_blood_station(血液退回血站信息表)】的数据库操作Service
 * @createDate 2022-11-08 12:46:24
 */
public interface ReturnBloodStationService extends IService<ReturnBloodStation> {
    /**
     * 查询所有血液退回血站信息
     *
     * @return 返回血液退回血站信息列表
     */
    List<ReturnBloodStation> findAll();

    /**
     * 插入血站退血信息
     *
     * @param returnBloodStation 血液退回血站包装类
     */
    void insertBackInformation(ReturnBloodStation returnBloodStation);

    /**
     * 根据待退血单号修改血液状态
     *
     * @param number    待退血单号
     * @param condition 待修改信息
     */
    void setConditionByNumber(String number, String condition);

    /**
     * 根据退血单号修改退血信息
     *
     * @param number             退血单号
     * @param returnBloodStation 血站退血信息包装类
     */
    void updateReturnStationByNumber(String number, ReturnBloodStation returnBloodStation);

    /**
     * 根据退血单号删除退血信息
     *
     * @param number 退血单号
     */
    void deleteReturnStationByNumber(String number);

    /**
     * 根据退血单号设置审批人信息以及状态
     *
     * @param number        退血单号
     * @param auditor       审批人姓名
     * @param auditorNumber 审批人工号
     * @param auditTime     审批时间
     * @param condition     状态
     */
    void setAuditAndConditionByNumber(String number, String auditor, String auditorNumber, Date auditTime, String condition);

    /**
     * 返回所有审批通过的血站退血信息
     *
     * @return 返回所有审批通过的血站退血信息
     */
    List<ReturnBloodStation> backInformationByCondition();

    /**
     * 根据编号批量下载选中数据
     *
     * @param response 请求
     * @param ids      编号列表
     * @throws IOException 异常
     */
    void batchDownload(HttpServletResponse response, ArrayList<Long> ids) throws IOException;

    /**
     * 分页查询功能
     *
     * @param currentPage        当前页面
     * @param pageSize           页面显示个数
     * @param returnBloodStation 血站退血信息
     * @return 返回分页查询结果
     */
    IPage<ReturnBloodStation> getPage(int currentPage, int pageSize, ReturnBloodStation returnBloodStation);

    /**
     * 根据编号批量删除
     *
     * @param ids 待删除数据的编号
     * @return 返回是否成功删除
     */
    boolean deleteBatch(ArrayList<Long> ids);

    /**
     * 分页查询功能
     *
     * @param currentPage        当前页面
     * @param pageSize           页面显示个数
     * @param returnBloodStation 血站退血信息
     * @return 返回分页查询结果
     */
    IPage<ReturnBloodStation> getPageByState(int currentPage, int pageSize, ReturnBloodStation returnBloodStation);

}
